package com.example.auth.service;

import com.example.auth.model.VO.SysMenuVO;
import com.example.auth.model.base.Result;
import com.example.auth.model.domain.SysMenu;
import com.example.auth.model.domain.SysRole;
import com.example.auth.model.domain.SysUserRoleMapping;

import java.util.List;

/**
 * @author xijie.wang
 * @decription:角色 权限
 * @date 2022-04-11 16:00
 */
public interface IRoleAndMenuService {

	/**
	 * 获取菜单或者按钮权限列表
	 *
	 * @param userId
	 * @param type
	 * @return
	 */
	List<SysMenu> getMenuOrPermissionList(Integer userId, Integer type);

	/**
	 * 返回一个账号所拥有的角色标识集合
	 *
	 * @param userId
	 * @return
	 */
	List<SysRole> getRoleList(Integer userId);

	/**
	 * 根据角色 和登录状态获取菜单、权限列表
	 *
	 * @return
	 */
	Result<List<SysMenuVO>> getMenuList();

	/**
	 * 获取权限码列表
	 *
	 * @return
	 */
	Result<List<String>> getPermissionCodeList();


	/**
	 * 保存用户与角色关系
	 *
	 * @param mapping
	 * @return
	 */
	int saveUserRole(SysUserRoleMapping mapping);

	/**
	 * 查询用户角色关系配置
	 *
	 * @param userId
	 * @return
	 */
	SysUserRoleMapping selectUserRoleMapping(Integer userId);

	/**
	 * 查询用户角色关系
	 *
	 * @param userId
	 * @return
	 */
	SysUserRoleMapping getUserRoleMappingByUserId(Integer userId);

	/**
	 * 更新用户与角色关系
	 */
	int updateUserRole(SysUserRoleMapping mapping);
}
